package com.yaya.generator.config;

import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.PackageConfig.Builder;

import java.util.HashMap;
import java.util.Map;

/**
 * 包配置
 */

public class PackageConfig {

    /** 业务包名 */
    public static String PARENT = "com.yiyan";

    /** 表名 */
    public static String[] TABLE_NAMES = {};

    /** 模块名 */
    public static String MODULE_NAME = "system";

    /**
     * 构建包配置构建者
     *
     * @param builder 包配置构建者
     */

    public static void build(Builder builder){
        //绝对输出路径
        String providerPath = GlobalConfig.OUTPUT_DIR + "/yiyan-service/src/main/java/";
        providerPath += PARENT.replaceAll("\\.", "/");
        providerPath += MODULE_NAME.equals("") ? "/" : "/" + MODULE_NAME + "/";


        // XML路径
        String xmlPath = GlobalConfig.OUTPUT_DIR + "/yiyan-service/src/main/resources/mapper/";
        xmlPath += MODULE_NAME.equals("") ? "" : MODULE_NAME + "/";

        // 生成路径配置
        Map<OutputFile, String> pathInfo = new HashMap<OutputFile, String>();
        pathInfo.put(OutputFile.entity, providerPath + "domain");
        pathInfo.put(OutputFile.mapper, providerPath + "mapper");
        pathInfo.put(OutputFile.mapperXml, xmlPath);
        pathInfo.put(OutputFile.service, providerPath + "service");
        // 在 serviceImpl 下加一层 "Impl" 文件夹
        pathInfo.put(OutputFile.serviceImpl, providerPath + "service/Impl");

//        pathInfo.put(OutputFile.serviceImpl, providerPath + "/"+ "Impl" + "service");
        pathInfo.put(OutputFile.controller, providerPath + "controller");

        // 业务包名
        builder.parent(PARENT)
                // 模块名
                .moduleName(MODULE_NAME)
                // 实体包名
                .entity("domain")
                // 映射接口包名
                .mapper("mapper")
                // 映射实现包名
                .xml("mapper")
                // 服务接口包名
                .service("service")
                // 服务实现包名
                .serviceImpl("service")
                // 控制器包名
                .controller("controller")
                // 其他文件包名
//                 .other("other")
                // 生成路径配置
                .pathInfo(pathInfo);

    }

}
